package com.itheima.goods.controller;

import com.itheima.goods.pojo.Brand;
import com.itheima.goods.query.QueryBrand;
import com.itheima.goods.service.BrandService;
import entity.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * 新增：POST
 * 删除：DELETE
 * 修改：PUT
 * 查询：GET/POST
 * @Description:
 * @Version: V1.0
 *
 * 400：前端向后端传递参数不匹配
 * 404：请求的路径不匹配
 * 405：请求方式不匹配
 *
 * Controller:
 * 1、接收前端请求和参数
 * 2、调用service
 * 3、返回结果
 *
 *
 * 作业：
 *      1、把Brand CRUD  独立的敲出来  5遍以上
 *      2、postman 测试 和 debug， 遇到错误学会debug（刻意模仿）
 *      3、验证独立写出来， 切换写 分类的 CRUD， 代码提交到石墨（文档）
 *
 *
 */
@RestController  //  @Controller @ResponseBody: 对象转json返给前端
@RequestMapping("brand")  // 统一的请求前缀
public class BrandController {

    @Autowired
    BrandService brandService;


    @PostMapping("findList")
    public Result findList(@RequestBody QueryBrand queryBrand) {
        return brandService.findList(queryBrand);
    }

    @PostMapping("findPage/{page}/{size}")
    public Result findPage(@RequestBody QueryBrand queryBrand,
                                @PathVariable("page") Integer page,
                                @PathVariable("size") Integer size) {
        return brandService.findPage(queryBrand, page, size);
    }


    @PostMapping("add")  // 请求方式
    public Result add(@RequestBody Brand brand) {  // 前端JSON  转换成 Brand对象
        return brandService.add(brand);
    }


    /**
     * /brand/findById/22 : 正确
     * /brand/findById?id=22: 404 找不到请求
     * @param id
     * @return
     */
    @GetMapping("findById/{id}")  // http://localhost:9001/brand/findById/22
    public Result findById( @PathVariable("id") Integer id) {
        return brandService.findById(id);
    }


    @PutMapping("update")  //http://localhost:9001/brand/update?id=22
    public Result update(@RequestBody Brand brand,@RequestParam("id") Integer id) {
        return brandService.updateById(brand,id);
    }


    @DeleteMapping("deleteById/{id}")
    public Result deleteById(@PathVariable("id") Integer id) {
       return brandService.deleteById(id);
    }

}
